package `02-lambda_rxjava`.rxjava05

/**
 * 去除Helper类，直接使用扩展函数
 */
fun main() {
    //create函数 无输入，输出是Helper对象，对象中的变量item = "我是字符串"
    create{
        "我是字符串"  //create操作符函数体的输出，map操作符函数体的输入
    }
    //map函数是Helper类的函数，输入是create函数输出对象中的item（“我是字符串”），输出是Helper对象，对象中的变量item = 5（it.length）
    .map{
        length  //当前操作符函数体的输出，下一个map操作符函数体的输入
    }
    //map函数是Helper类的函数，输入是上面map函数输出对象中的item（5），输出是Helper对象，对象中的变量item = "【$it】"
    .map{
        "【$this】" //当前操作符函数体的输出，consumer操作符函数体的输入
    }
    //consumer函数是Helper类的函数，输入是上面map函数输出对象中的item（【5】），输出是Unit
    .consumer{
        println("内容的长度是$this")
    }
}

fun <R> create(action:()->R):R = action()
fun <T,R> T.map(action:T.()->R):R = action(this)
fun <T> T.consumer(action:T.()->Unit):Unit =  action(this)
